package com.yanqu.road.server.logic.recharge.limit.activity;

import com.yanqu.road.entity.activity.ActivityInfo;
import com.yanqu.road.entity.activity.fivehero.FiveHeroUserData;
import com.yanqu.road.entity.config.goods.MallInfo;
import com.yanqu.road.entity.enums.eActivityType;
import com.yanqu.road.entity.enums.eSystemId;
import com.yanqu.road.entity.mall.LimitBuyResult;
import com.yanqu.road.server.gameplayer.module.activity.fivehero.FiveHeroModule;
import com.yanqu.road.server.manger.activity.ActivityMgr;
import com.yanqu.road.server.manger.activity.fivehero.FiveHeroMgr;
import com.yanqu.road.server.manger.config.SystemOpenMgr;
import com.yanqu.road.server.protocol.GameErrorCode;

public class FiveHeroActivityMallLimit extends BaseActivityMallLimit{
    public FiveHeroActivityMallLimit(long userId, MallInfo mallInfo, ActivityInfo activityInfo) {
        super(userId, mallInfo, activityInfo);
    }

    @Override
    protected int activityCheck() {
        if(!ActivityMgr.activityInTime(activityInfo)){
            return GameErrorCode.E_ACTIVITY_NO_IN_TIME_CANNOT_BUY;
        }
        if(activityInfo.getType() != eActivityType.FiveHero.getValue()){
            return GameErrorCode.E_ACTIVITY_NO_IN_TIME_CANNOT_BUY;
        }
        return 0;
    }

    @Override
    protected boolean isSystemUnLock() {
        return SystemOpenMgr.systemOpen(player, eSystemId.FiveHeroActivity.getValue());
    }

    @Override
    protected LimitBuyResult buyCountLimit() {
        LimitBuyResult limitBuyResult = new LimitBuyResult();
        ActivityInfo activityInfo = FiveHeroMgr.getActivityInfo();
        int touchTimes = 0;
        if (ActivityMgr.activityInShowTime(activityInfo)) {
            FiveHeroUserData userdata = player.getModule(FiveHeroModule.class).getUserData();
            if(null != userdata){
                touchTimes = userdata.getMallTimes(mallInfo.getMallId());
                if(userdata.getCurrentMall() == mallInfo.getMallId()){
                    touchTimes++;
                }
            }
        }
        limitBuyResult.setRet(0);
        limitBuyResult.setLimitCount(touchTimes);
        return limitBuyResult;
    }

    @Override
    protected int logicCheck() {
        if (!player.getModule(FiveHeroModule.class).canPrecharge(mallInfo.getMallId())) {
            return GameErrorCode.E_MALL_LIMIT_BUY;
        }
        return 0;
    }
}
